package routers

import (
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	_ "go-gin-example/docs"
	"go-gin-example/middleware/jwt"
	"go-gin-example/pkg/export"
	"go-gin-example/pkg/qrcode"
	"go-gin-example/pkg/setting"
	"go-gin-example/routers/api"
	v1 "go-gin-example/routers/api/v1"
	"net/http"
)

func InitRouter() *gin.Engine {

	r := gin.New()

	r.Use(gin.Logger())

	r.Use(gin.Recovery())

	gin.SetMode(setting.ServerSetting.RunMode)

	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	r.GET("/auth", api.GetAuth)
	r.POST("/upload", api.UploadImage)

	// 注册路由
	apiv1 := r.Group("/api/v1")
	apiv1.Use(jwt.JWT())
	apiv1.POST("/articles/poster/generate", v1.GenerateArticlePoster)
	//{
	//	// 获取标签列表
	//	apiv1.GET("/tags", v1.GetTags)
	//	// 新建标签
	//	apiv1.POST("/tags", v1.AddTag)
	//	// 更新指定标签
	//	apiv1.PUT("/tags/:id", v1.EditTag)
	//	// 删除指定标签
	//	apiv1.DELETE("/tags/:id", v1.DeleteTag)
	//
	//	// 获取文章列表
	//	apiv1.GET("/articles", v1.GetArticles)
	//	// 获取指定文章
	//	apiv1.GET("/articles/:id", v1.GetArticle)
	//	// 新建文章
	//	apiv1.POST("/articles", v1.AddArticle)
	//	// 更新指定文章
	//	apiv1.PUT("/articles/:id", v1.EditArticle)
	//	// 删除指定文章
	//	apiv1.DELETE("/articles/:id", v1.DeleteArticle)
	//}

	{
		r.POST("/tags/export", v1.ExportTag)
		r.POST("/tags/import", v1.ImportTag)
		tags := apiv1.Group("/tags")
		{
			tags.GET("",v1.GetTags)
			tags.PUT(":id", v1.EditTag)
			tags.POST("", v1.AddTag)
			tags.DELETE("/:id", v1.DeleteTag)
		}
		r.StaticFS("/export", http.Dir(export.GetExcelFullPath()))
		r.StaticFS("/qrcode", http.Dir(qrcode.GetQrCodeFullPath()))
	}

	//r.GET("/test", func(c *gin.Context) {
	//	c.JSON(200, gin.H{
	//		"message": "test",
	//	})
	//})
	return  r
}